// const a = Object.create(
//   {},
//   {
//     // getX 是一个不可枚举属性
//     getX: {
//       value: () => this.x,
//     },
//   }
// );

// a.x = 1;
// a.y = 2;
// a[Symbol("z")] = 3;

// for (let key in a) {
//   console.log(key); // expected output: x y z
// }

// const b = Object.keys(a);
// const c = Object.entries(a)

// console.log(a); // expected putput: { x: 1, [Symbol(y)]: 2 }
// console.log(b); // expected putput: [ 'x' ]
// console.log(c); // expected putput: [ 'getX', 'x', Symbol(y) ]

const a = Object.create(
  {},
  {
    // getX 是一个不可枚举属性
    getX: {
      value: () => this.x,
    },
  }
);

a.x = 1;

const c = Object.getOwnPropertyNames(a);

console.log(a); // expected output: { x: 1 }
console.log(c); // expected output: [ 'getX', 'x' ]